from enum import unique

import bcrypt
from flask_sqlalchemy import SQLAlchemy


#数据库对象
db = SQLAlchemy()

#定义User Model
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80),unique=True, nullable=False)
    password_hash = db.Column(db.String(255),nullable=False)

    #hash加密密码
    def set_password(password):
        #生成盐 一段随机字符串
        salt = bcrypt.gensalt()
        password_hash = bcrypt.hashpw(password.encode('utf-8'), salt).decode('utf-8')
        return password_hash

    #登录时验证密码是否一致
    def check_password(self, password):
        return bcrypt.checkpw(password.encode('utf-8'),self.password_hash.encode('utf-8'))

    # 将数据库模型数据 转换 python对象 （python字典）
    def to_dict(self):
            return {
                'id': self.id,
                'username': self.username,
            }

#定义好友 model
class Friend(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'),nullable=False)
    friend_id = db.Column(db.Integer, db.ForeignKey('friend.id'),nullable=False)
    remark = db.Column(db.String(255),nullable=False)

    #将数据库模型数据 转换 python对象 （python字典）
    def to_dict(self):
        return {
            'id': self.id,
            'user_id': self.user_id,
            'friend_id': self.friend_id,
            'remark': self.remark,
        }